package com.jielihaofeng.chat.service;

import com.jielihaofeng.chat.entity.ChatGroupUserEntity;
import com.jielihaofeng.chat.query.ChatGroupUserQuery;
import com.jielihaofeng.chat.vo.ChatGroupUserVO;
import com.jielihaofeng.framework.common.page.PageResult;
import com.jielihaofeng.framework.common.service.BaseService;

import java.util.List;
import java.util.Set;

/**
 * 群组用户表
 *
 * @author 借力好风 949394048@qq.com
 * @since 1.0.0 2022-07-22
 */
public interface ChatGroupUserService extends BaseService<ChatGroupUserEntity> {

    PageResult<ChatGroupUserVO> page(ChatGroupUserQuery query);

    boolean save(ChatGroupUserVO vo);

    void update(ChatGroupUserVO vo);

    void delete(List<Long> idList);

    /**
     * 用户退出群组
     * @param groupId 群组id
     * @param userId 用户id
     */
    void exitGroup(Long groupId, Long userId);

    /**
     * 获取用户所在群组id列表
     * @param userId 用户id
     * @return 群组id列表
     */
    List<Long> getGroupIdList(Long userId);

    /**
     * 获取群组所有用户id列表
     * @param groupId 群组id
     * @return 群组所有用户id列表
     */
    Set<Long> getUserIdList(Long groupId);
}
